package org.zjx.repository.impl;


import org.zjx.db.ItemTemplateDB;
import org.zjx.enums.prop.ItemType;
import org.zjx.model.prop.ItemTemplate;
import org.zjx.repository.ItemTemplateRepository;

import java.util.List;
import java.util.Optional;

public class ItemTemplateRepositoryImpl implements ItemTemplateRepository {
    private final ItemTemplateDB itemTemplateDB;

    public ItemTemplateRepositoryImpl(ItemTemplateDB itemTemplateDB) {
        this.itemTemplateDB = itemTemplateDB;
    }

    @Override
    public List<ItemTemplate> findAllTemplates() {
        return itemTemplateDB.findAll();
    }

    @Override
    public Optional<ItemTemplate> findTemplateById(int templateId) {
        return Optional.ofNullable(itemTemplateDB.findById(templateId));
    }

    @Override
    public Optional<ItemTemplate> findTemplateByName(String templateName) {
        return Optional.ofNullable(itemTemplateDB.findByName(templateName));
    }

    @Override
    public List<ItemTemplate> findTemplatesByType(ItemType type) {
        return itemTemplateDB.findByType(type.name());
    }

    @Override
    public void saveTemplate(ItemTemplate template) {
        if (itemTemplateDB.findById(template.getId()) != null) {
            itemTemplateDB.update(template);
        } else {
            itemTemplateDB.insert(template);
        }
    }
}